package ge.geral;

import java.util.ArrayList;
import java.util.List;

import ge.dados.Matricula;
import ge.dados.Validadores;

public class Aluno {
	private static final Validadores VALIDADOR = new Validadores();
	private static List<Aluno> alunosCadastrados = new ArrayList<Aluno>();
	private String nomeDoAluno;
	private int idadeDoAluno;
	private String enderecoDoAluno;
	private String nomeDoPaiDoAluno;
	private String nomeDaMaeDoAluno;
	private String emailDoAluno;
	private String matriculaDoAluno;
	private Turma turmaDoAluno;

	public Aluno(String nomeDoAluno, int idadeDoAluno, String enderecoDoAluno,
			String nomeDoPaiDoAluno, String nomeDaMaeDoAluno,
			String emailDoAluno) throws Exception {

		if (!VALIDADOR.validaNomePessoa(nomeDoAluno)) {
			throw new Exception("Nome do aluno invalido !");
		}
		if (!VALIDADOR.validaNomePessoa(nomeDaMaeDoAluno)) {
			throw new Exception("Nome da mae do aluno invalido !");
		}
		if (!VALIDADOR.validaNomePessoa(nomeDoPaiDoAluno)) {
			throw new Exception("Nome do pai do aluno invalido !");
		}

		if (!VALIDADOR.validaEmail(emailDoAluno)) {
			throw new Exception("Email do aluno invalido !");
		}
		if (idadeDoAluno < 0) {
			throw new Exception("Idade do aluno invalida ! !");
		}

		this.nomeDoAluno = nomeDoAluno;
		this.idadeDoAluno = idadeDoAluno;
		this.enderecoDoAluno = enderecoDoAluno;
		this.nomeDoPaiDoAluno = nomeDoPaiDoAluno;
		this.nomeDaMaeDoAluno = nomeDaMaeDoAluno;
		this.emailDoAluno = emailDoAluno;
		Matricula matricula = new Matricula();
		this.matriculaDoAluno = matricula.getNumeroDaMatricula();

	}

	public Aluno(String nomeDoAluno, String enderecoDoAluno,
			String nomeDaMaeDoAluno, String emailDoAluno) throws Exception {

		if (!VALIDADOR.validaNomePessoa(nomeDoAluno)) {
			throw new Exception("Nome do aluno invalido !");
		}
		if (!VALIDADOR.validaNomePessoa(nomeDaMaeDoAluno)) {
			throw new Exception("Nome da mae do aluno invalido !");
		}
		if (!VALIDADOR.validaEmail(emailDoAluno)) {
			throw new Exception("Email do aluno invalido !");
		}
		if (idadeDoAluno < 0) {
			throw new Exception("Idade do aluno invalida ! !");
		}

		this.nomeDoAluno = nomeDoAluno;
		this.idadeDoAluno = -1;
		this.enderecoDoAluno = "-";
		this.nomeDoPaiDoAluno = "-";
		this.nomeDaMaeDoAluno = nomeDaMaeDoAluno;
		this.emailDoAluno = emailDoAluno;
	}

	public void matriculaAlunoNaTurma(Turma nomeDaTurma) {
		this.turmaDoAluno = nomeDaTurma;
		nomeDaTurma.setNumeroDeAlunos(nomeDaTurma.getNumeroDeAlunos() + 1);
		System.out.printf("Aluno matriculado com sucesso na turma %s",
				nomeDaTurma.getNome());
	}

	public String getNomeDoAluno() {
		return nomeDoAluno;
	}

	public void setNomeDoAluno(String nomeDoAluno) {
		this.nomeDoAluno = nomeDoAluno;
	}

	public int getIdadeDoAluno() {
		return idadeDoAluno;
	}

	public void setIdadeDoAluno(int idadeDoAluno) {
		this.idadeDoAluno = idadeDoAluno;
	}

	public String getEnderecoDoAluno() {
		return enderecoDoAluno;
	}

	public void setEnderecoDoAluno(String enderecoDoAluno) {
		this.enderecoDoAluno = enderecoDoAluno;
	}

	public String getNomeDoPaiDoAluno() {
		return nomeDoPaiDoAluno;
	}

	public void setNomeDoPaiDoAluno(String nomeDoPaiDoAluno) {
		this.nomeDoPaiDoAluno = nomeDoPaiDoAluno;
	}

	public String getNomeDaMaeDoAluno() {
		return nomeDaMaeDoAluno;
	}

	public void setNomeDaMaeDoAluno(String nomeDaMaeDoAluno) {
		this.nomeDaMaeDoAluno = nomeDaMaeDoAluno;
	}

	public String getEmailDoAluno() {
		return emailDoAluno;
	}

	public void setEmailDoAluno(String emailDoAluno) {
		this.emailDoAluno = emailDoAluno;
	}

}
